プレビューになったLog Analyticsのstorage_bytesフィールドを使ってみた
概要
Log Analyticsでstorage_bytes
フィールドを使用してログエントリの課金対象量をクエリできるようになりました。
storage_bytes
フィールドは、リソースタイプやアプリケーション名などのさまざまなディメンションで課金対象量を集計するクエリに使用できます。
クエリの結果は、グラフで表示したり、他のツールで使用したりもできます。
※2024/6/28時点ではプレビューとなっています
前提条件・使い方
前提条件
- クエリする対象ログバケットがLog Analyticsを使用するようにアップグレードされている
- Log Analytics 、BigQuery Studio、Looker Studio、bq コマンドラインツールなど、BigQueryデータセットにアクセスできる環境でのみ利用可能です
- 対象ログは2024年1月1日以降に書き込まれていること
ログバケットがLog Analyticsを使用するようにアップグレードされているかどうかは、ログストレージの画面から確認することができます。(https://console.cloud.google.com/logs/storage)
LogAnalyticsを使用可能
の列で対象バケットがUpgrade
と表示されている場合はUpgradeしないと本機能は使用することができません。
Upgrade
ボタンを押下すると以下のような表示が出ます。アップグレードを押下すると数分程度経過後にアップグレードが完了します(アップグレードするかどうかはよく確認の上実施ください)。
アップグレード完了後は以下の表示となります。
LogAnalyticsでの使い方
storage_bytes
列を追加して、SQLを実行すると該当レコードのログのバイト数が出力されます。
SELECT timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload, storage_bytes FROM `プロジェクトID.global._Default._AllLogs` WHERE resource.type = 'workflows.googleapis.com/Workflow'
上記のSQLでは指定したプロジェクトの、デフォルトのログルーターシンクとログバケットに集約されたログデータ全体から指定した列の値を抽出します。
また、resource.type
でWorkflowsのログだけになるように絞っています。結果は以下のようになりました。
storage_bytes
列で、各ログのバイト数が出力されていることが確認できました。
せっかくなので、Cloud Run ジョブのジョブごとのログデータ量を可視化してみました。
SELECT CAST(JSON_VALUE(resource.labels.job_name) AS STRING) AS extracted_job_name , SUM(storage_bytes) AS total_bytes FROM `プロジェクトID.global._Default._Default` WHERE resource.type = 'cloud_run_job' GROUP BY ALL
ジョブ名ごとにグループ化して、各ジョブの合計ログデータ量を可視化しています。 表形式だとこのような形です。 さらりとSQLで書けてログの量が可視化できる、これはすごい。
まとめ
前提条件さえクリアしてしまえば、列追加することで使えるようになるのでお手軽とも言えます。課金対象のログの量をサクッと確認できるので、検証段階でログの量を確認して、本番運用時にどの程度のログ費用が発生するかより正確に予測することができるようになるのではないかと思います。早くGAになって欲しい機能だなと思います。
また、今回検証できていないのですがBigQueryにシンクしたログに関しても同様にstorage_bytes
フィールドが使用できるようになっているようです。
この記事がどなたかのお役に立てば嬉しいです。それではまた。